﻿#pragma once

#include "command.h"

namespace CAGD
{

/**
 * 相机构造类.
 */
class CmdCamera : public CmdPoint
{
  public:
    CAGD_CREATE_COMMAND(CmdCamera)

    /**
     * @brief 执行一步（采点）.
     * @return
     * @param c
     * @see
     */
    virtual CmdStatus Step(char c) override;
};

/**
 * 点光源构造类.
 */
class CmdPointLight : public CmdPoint
{
  public:
    CAGD_CREATE_COMMAND(CmdPointLight)

    /**
     * @brief 执行一步（采点）.
     * @return
     * @param c
     * @see
     */
    virtual CmdStatus Step(char c) override;
};

/**
 * 方向光源构造类.
 */
class CmdDirLight : public CmdPoint
{
  public:
    CAGD_CREATE_COMMAND(CmdDirLight)

    /**
     * @brief 执行一步（采点）.
     * @return
     * @param c
     * @see
     */
    virtual CmdStatus Step(char c) override;
};

/**
 * 聚光源构造类.
 */
class CmdSpotLight : public CmdPoint
{
  public:
    CAGD_CREATE_COMMAND(CmdSpotLight)

    /**
     * @brief 执行一步（采点）.
     * @return
     * @param c
     * @see
     */
    virtual CmdStatus Step(char c) override;
};

} // namespace CAGD
